package com.fand.site.service;

import java.util.List;
import java.util.Map;

import com.fand.cache.support.CacheEvictSupport;
import com.fand.common.service.CommonService;
import com.fand.dto.PaginationDto;
import com.fand.site.dto.DomainNaDto;
import com.fand.site.dto.SiteDeDto;
import com.fand.site.dto.SiteDto;

/**
 * 站服务
 * 
 * @author haitao.yao
 */
public interface SiteService extends CacheEvictSupport {
	String BEAN_ID = "com.fand.site.service.SiteService";

	String CACHE_NAME = SiteService.BEAN_ID + "Cache";

	/**
	 * 删除:域名
	 * 
	 * @param id
	 *            域名标识
	 * @return 影响行数
	 */
	int deleteDomainNaBy1(String id);

	/**
	 * 删除:域名
	 * 
	 * @param ids
	 *            域名标识集合
	 * @return 影响行数
	 */
	int deleteDomainNaByIds(String ids);

	/**
	 * 删除:站
	 * 
	 * @param id
	 *            站标识
	 * @return 影响行数
	 */
	int deleteSiteBy1(String id);

	/**
	 * 删除:站
	 * 
	 * @param ids
	 *            站标识集合
	 * @return 影响行数
	 */
	int deleteSiteBy1(String[] ids);

	/**
	 * 删除:站
	 * 
	 * @param ids
	 *            站标识集合
	 * @return 影响行数
	 */
	int deleteSiteByIds(String ids);

	/**
	 * 删除:站默认
	 * 
	 * @param entityId
	 *            站标识
	 * @return 影响行数
	 */
	int deleteSiteDeBy1(String entityId);

	/**
	 * 获取：公共服务
	 * 
	 * @return 公共服务
	 */
	CommonService getCommonService();

	/**
	 * 分页：域名
	 * 
	 * @param domainNa
	 *            域名对象
	 * @return 分页数据
	 */
	PaginationDto<Map<String, Object>> paginationDomainNaBy1ForMapList(DomainNaDto domainNa);

	/**
	 * 分页：站
	 * 
	 * @param site
	 *            站对象
	 * @return 分页数据
	 */
	PaginationDto<Map<String, Object>> paginationSiteBy1ForMapList(SiteDto site);

	/**
	 * 保存：域名
	 * 
	 * @param domainNa
	 *            域名对象
	 * @return 域名标识
	 */
	String saveDomainNaBy1ForObject(DomainNaDto domainNa);

	/**
	 * 保存：站
	 * 
	 * @param site
	 *            站对象
	 * @return 站标识
	 */
	String saveSiteBy1ForObject(SiteDto site);

	/**
	 * 保存:站默认
	 * 
	 * @param siteDe
	 *            站默认对象
	 * @return 影响行数
	 */
	int saveSiteDeBy1(SiteDeDto siteDe);

	/**
	 * 保存:站默认
	 * 
	 * @param entityId
	 *            站标识
	 * @return 影响行数
	 */
	int saveSiteDeBySefDefault(String entityId);

	/**
	 * 查询:域名
	 * 
	 * @param id
	 *            域名标识
	 * @return 域名对象
	 */
	DomainNaDto selectDomainNaBy1ForMappedObject(String id);

	/**
	 * 查询：域名数量
	 * 
	 * @param id
	 *            域名标识
	 * @param code
	 *            域名编号
	 * 
	 * @return 域名数量
	 */
	int selectDomainNaByIdAndCodeForObject(String id, String code);

	/**
	 * 查询:站
	 * 
	 * @param id
	 *            站标识
	 * @return 站对象
	 */
	SiteDto selectSiteBy1ForMappedObject(String id);

	/**
	 * 查询
	 * 
	 * @return 所有站点
	 */
	List<SiteDto> selectSiteBy1ForMappedObjectList();

	/**
	 * 查询:获取站
	 * 
	 * @param domainUrl
	 *            域名路径
	 * @return 站
	 */
	SiteDto selectSiteBy2ForMappedObject(String domainUrl);

	/**
	 * 查询:获取默认站
	 * 
	 * @return 站
	 */
	SiteDto selectSiteByDefaultForMappedObject();

	/**
	 * 查询：站点数量
	 * 
	 * @param id
	 *            站标识
	 * @param code
	 *            站点编号
	 * 
	 * @return 站点数量
	 */
	int selectSiteByIdAndCodeForObject(String id, String code);
}